﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Support.DTO;
using System.Data;
using System.Data.SqlClient;
using Support.Enums;

namespace DataAccess
{
    public class UsuarioDAL : BaseSQLDAL
    {
        public UsuarioDTO GetUsuario(string username, string password)
        {
            try
            {
                UsuarioDTO usuario = new UsuarioDTO();
                CreateCommand("GetUsuario", true);
                AddCmdParameter("@UserName", username, ParameterDirection.Input);
                AddCmdParameter("@Password", password, ParameterDirection.Input);

                ExecuteReader();
                while (Read())
                {
                    usuario = FillDTO(GetDataReader());
                }
                return usuario;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                DisposeCommand();
                DisposeDataReader();
                CloseConnection();
            }
        }

        private UsuarioDTO FillDTO(SqlDataReader reader)
        {
            return new UsuarioDTO()
            {
                Id = reader.GetInt32(reader.GetOrdinal("usuario_id")),
                UserName = reader.GetString(reader.GetOrdinal("usuario_username")),
                Password = reader.GetString(reader.GetOrdinal("usuario_password")),
                Nombre = reader.GetString(reader.GetOrdinal("usuario_nombre")),
                Apellido = reader.GetString(reader.GetOrdinal("usuario_apellido")),
                Rol = AsignarRol(reader.GetInt32(reader.GetOrdinal("usuario_rol")))
            };
        }

        private Support.Enums.ERoles AsignarRol(int p)
        {
            //ROLES:
            //1- Jefe
            //2- Secretario
            //3- Profesional
            ERoles Rol = ERoles.Profesional;
            switch (p)
            {
                case 1:
                    Rol = ERoles.Jefe;
                    break;
                case 2:
                    Rol = ERoles.Secretario;
                    break;
                case 3:
                    Rol = ERoles.Profesional;
                    break;
            }
            return Rol;
        }
    }
}
